<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Eder
 */
class ReservaDAO {
    
    var $className;
    
    public function __construct() {
        $this->className = 'ReservaDAO';
        LogUtil::info("class $this->className", "__construct");
    }

    public function __destruct() {
        LogUtil::info("class $this->className", "__destruct");
    }
    
    public function obtenerReservas() {
        LogUtil::info("class $this->className", "obtenerReservas");
        global $wpdb;  
        $tempReservas = $wpdb->get_results('SELECT   
                                                id,
                                                Ficha_id,
                                                Tipo_Tarjeta_id,
                                                cod_generado,
                                                eticket_visa,
                                                monto_cobrado,
                                                fecha,
                                                estado
                                            FROM 
                                                    wp_sisres_reserva'
                                          , ARRAY_A);

        $reservas = array();
        $i = 0;
        if (!empty($tempReservas)) {
            foreach ($tempReservas as $tempReserva) {
                $reservas[$i++] = $this->cargarReserva($tempReserva);
            }
        }
        return $reservas;
    }
    
    public function obtenerReservaPorId($id) {
        LogUtil::info("class $this->className", "obtenerReservaPorId");
        global $wpdb;  
        $tempReserva = $wpdb->get_row('SELECT   
                                                id,
                                                Ficha_id,
                                                Tipo_Tarjeta_id,
                                                cod_generado,
                                                eticket_visa,
                                                monto_cobrado,
                                                fecha,
                                                estado
                                            FROM 
                                                wp_sisres_reserva 
                                            WHERE
                                                id = '.$id
                                          , ARRAY_A);
        $reserva = $this->cargarReserva($tempReserva);
        return $reserva;
    }
    
    public function obtenerReservaPorCodigoGenerado($cod_generado) {
        LogUtil::info("class $this->className", "obtenerReservaPorCodigoGenerado");
        global $wpdb;  
        LogUtil::info("class $this->className", "codigo: ".$cod_generado);
        $tempReserva = $wpdb->get_row('SELECT   
                                                id,
                                                Ficha_id,
                                                Tipo_Tarjeta_id,
                                                cod_generado,
                                                eticket_visa,
                                                monto_cobrado,
                                                fecha,
                                                estado
                                            FROM 
                                                wp_sisres_reserva 
                                            WHERE
                                                cod_generado = '.$cod_generado
                                            , ARRAY_A);
        $reserva = $this->cargarReserva($tempReserva);
        return $reserva;
    }
    
    public function obtenerReservaPorETicket($eticket) {
        LogUtil::info("class $this->className", "obtenerReservaPorETicket");
        global $wpdb;  
        LogUtil::info("class $this->className", "eticket: ".$eticket);
        $tempReserva = $wpdb->get_row('SELECT   
                                                id,
                                                Ficha_id,
                                                Tipo_Tarjeta_id,
                                                cod_generado,
                                                eticket_visa,
                                                monto_cobrado,
                                                fecha,
                                                estado
                                            FROM 
                                                wp_sisres_reserva 
                                            WHERE
                                                eticket_visa = "'.$eticket.'"'
                                            , ARRAY_A);
        $reserva = $this->cargarReserva($tempReserva);
        return $reserva;
    }
    
    public function guardarReserva($reserva){
        LogUtil::info("class $this->className", "guardarReserva");
        global $wpdb;   
        date_default_timezone_set("America/Lima");
        $data_array = array( 
            'Ficha_id'=> $reserva->Ficha_id,
            'Tipo_Tarjeta_id' => $reserva->Tipo_Tarjeta_id,
            'cod_generado' => $reserva->cod_generado,
            'eticket_visa' => $reserva->eticket_visa,
            'monto_cobrado' => $reserva->monto_cobrado,
            'fecha' => date("Y-m-d H:i:s",Util::obtenerHoraActualPeru()),
            'estado' => EstadoReservaType::Pendiente
        );
        $wpdb->insert('wp_sisres_reserva', $data_array);
        return $wpdb->insert_id;
    }
    
    public function actualizarEstadoReserva($id,$estado){
        LogUtil::info("class $this->className", "actualizarEstadoReserva");
        LogUtil::debug("class $this->className", "id=$id estado=$estado");
        global $wpdb;
	$wpdb->query("UPDATE wp_sisres_reserva SET estado ='$estado' WHERE id = '$id'");
        return true;
    }
    
    private function cargarReserva($tempReserva){   
        LogUtil::info("class $this->className", "cargarReserva");
        $reserva = new Reserva();
        $reserva->id = $tempReserva['id'];  
        $reserva->Ficha_id = $tempReserva['Ficha_id'];   
        $reserva->Tipo_Tarjeta_id = $tempReserva['Tipo_Tarjeta_id'];   
        $reserva->cod_generado = $tempReserva['cod_generado'];  
        $reserva->eticket_visa = $tempReserva['eticket_visa'];
        $reserva->monto_cobrado = $tempReserva['monto_cobrado'];   
        $reserva->fecha = $tempReserva['fecha'];   
        $reserva->estado = $tempReserva['estado'];
        return $reserva;
    }

}
?>
